﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Ext.Net;
using Ent.Inscripcion.Core.Core;
using Ent.Inscripcion.Core.Administracion;

namespace Ent.Inscripcion.Presentacion.Administracion
{
    public partial class Examenes : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!X.IsAjaxRequest)
                {
                    //Carga de horarioExamens de dias
                    stoDias.DataSource = DiaLista.GetLista("DIAS");
                    stoDias.DataBind();
                    //Carga de horarioExamens de Niveles
                    stoNiveles.DataSource = CatalogoItemLista.GetListaCatalogos("NIVEL");
                    stoNiveles.DataBind();
                    //Carga de horarioExamens de Aulas
                    stoAulas.DataSource = CatalogoItemLista.GetListaCatalogos("AULA");
                    stoAulas.DataBind();
                    //Carga de horarioExamens de dias

                }
            }
            catch (Exception ex)
            {
                Util.RegistarLog(ex.ToString());
            }
            
        }
        protected void btnBuscar_Click(object sender, DirectEventArgs e)
        {
            try
            {
                var criterioHorario = HorarioExamenCriterio.NewHorarioExamenCriterio();
                criterioHorario.DiaId=e.ExtraParams["Dia"];
                criterioHorario.NivelId = e.ExtraParams["Nivel"];

                CargarDatos(criterioHorario);
                e.Success = true;
            }
            catch (Exception ex)
            {
                e.Success = false;
                Util.RegistarLog(ex.ToString());
            }
        }

        private void CargarDatos(HorarioExamenCriterio criterio)
        {
            stoExamenes.DataSource = HorarioExamenLista.GetHorarioExamenLista(criterio);
            stoExamenes.DataBind();
        }
        /// <summary>
        /// Permite manejar la accion realizada sobre un HorarioExamen
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ManejarAccion(object sender, DirectEventArgs e)
        {
            try
            {
                Guid idHorarioExamen = Guid.Parse(e.ExtraParams["Id"]);
                string opcion = e.ExtraParams["Comando"];
                var horarioExamen = HorarioExamen.GetHorarioExamen(idHorarioExamen);

                cbDia.SetValue( horarioExamen.DiaId);
                cbNivel.SetValue(horarioExamen.NivelId);
                cbxAula.SetValue(horarioExamen.AulaId);
                cbxEstado.SetValue(horarioExamen.Estado);
                tfHoraInicio.SetValue(horarioExamen.HoraInicio);
                tfHoraFin.SetValue(horarioExamen.HoraFin);
                nbfCupo.SetValue(horarioExamen.Cupo);
                switch (opcion)
                {
                    case "Eliminar":
                        hidAccionExamen.Text = "Eliminar";
                        btnEliminar.Show();
                        btnGuardar.Hide();
                        break;
                    case "Editar":
                        hidAccionExamen.Text = "Editar";
                        btnEliminar.Hide();
                        btnGuardar.Show();
                        break;
                    default:
                        break;
                }
                hidIdExamen.Text = idHorarioExamen.ToString();
                winExamenes.Show();
                e.Success = true;
            }
            catch (Exception ex)
            {
                e.Success = false;
                Util.RegistarLog(ex.ToString());
            }
        }

        public void btnEliminar_Click(object sender, DirectEventArgs e)
        {
            try
            {
                string id = e.ExtraParams["Id"];
                Guid idHorario = Guid.Parse(id);
                var horarioExamen = HorarioExamen.GetHorarioExamen(idHorario);
                horarioExamen.Delete();
                horarioExamen.Save();
                CargarDatos(HorarioExamenCriterio.NewHorarioExamenCriterio());
                e.Success = true;
            }
            catch (Exception ex)
            {
                e.Success = false;
                Util.RegistarLog(ex.ToString());
            }

        }
        protected void btnGuardar_Click(object sender, DirectEventArgs e)
        {
            try
            {
                string accion = e.ExtraParams["Accion"];
                string id = e.ExtraParams["Id"];
                var aula = e.ExtraParams["Aula"];
                var dia = e.ExtraParams["Dia"];
                var nivel = e.ExtraParams["Nivel"];
                var horaInicio = e.ExtraParams["HoraInicio"];
                var horaFin = e.ExtraParams["HoraFin"];
                int estado ;
                int.TryParse(e.ExtraParams["Estado"], out estado);
                int cupo;
                int.TryParse(e.ExtraParams["Cupo"], out cupo);
                DateTime hi, hf;
                DateTime.TryParse(horaInicio, out hi);
                DateTime.TryParse(horaFin, out hf);
                HorarioExamen horarioExamen = null;
                if (accion == "Editar")
                    horarioExamen = HorarioExamen.GetHorarioExamen(new Guid(id));
                else
                    horarioExamen = HorarioExamen.NewHorarioExamen();
                horarioExamen.AulaId = aula;
                horarioExamen.DiaId = dia;
                horarioExamen.HoraFin = hf;
                horarioExamen.HoraInicio = hi;
                horarioExamen.NivelId = nivel;
                horarioExamen.Estado = estado;
                horarioExamen.Cupo = cupo;
                horarioExamen.Save();
                CargarDatos(HorarioExamenCriterio.NewHorarioExamenCriterio());
                e.Success = true;
            }
            catch (Exception ex)
            {
                e.Success = false;
                Util.RegistarLog(ex.ToString());
            }
        }
    }
}